home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / djvga02.arc / DJVGA.DOC < prev    next >
Text File  |  1991-05-17  |  24KB  |  633 lines

  1.  
  2.  
  3. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-
  4.                              DJVGA Version .02 Beta
  5.                       (C) Copyright 1991 John Richardson
  6.  
  7.                      By: John Richardson & Dan Vanderboom
  8.  
  9.                            TopSoft Support Systems
  10.                           Fido [1:154/300,1:154/301]
  11.                        RBBS-NET [8:972/1001,8:972/1000]
  12.                               (414)796-8408 v32
  13. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-
  14.  
  15.  
  16. Registration
  17. ============
  18. DJVGA is distributed as shareware.  Please read and return the
  19. registration form in REGISTER.FRM.  If you are already a registered
  20. user (ie. you sent in $10 for some version previous to 1.00), then
  21. you are entitled to a registered version of DJVGA 1.00 without
  22. paying any additional fee.  You may also register online at TopSoft
  23. Support Systems using your Visa/MC.
  24.  
  25. NOTE: UPON REGISTERING YOU "WILL" RECEIVE THE ASM AND PASCAL SOURCE CODE
  26.  
  27.       
  28.       
  29. Warranty
  30. ========
  31. This is product is provided "as is" without warranty of any kind.  The
  32. entire risk as to the results and performance of the program is assumed by
  33. you. Further more, I the author do not warrant, guarantee, or make any
  34. representations regarding the use of, or the results of the use of the program,
  35. and you rely on the program and results solely at your own risk.  I the author
  36. cannot accept responsibility for system damage, loss of profit, or any other
  37. special, incidental, or consequential damages resulting from the use or
  38. inability to use this product.
  39.       
  40.       
  41. Copyright
  42. =========
  43. The DJVGA library is distributed as SHAREWARE. Under this concept
  44. you may use the SHAREWARE (unregistered) version for a reasonable period of
  45. time, which I consider to be two weeks, after which you must either register
  46. your copy or discontinue usage.
  47.       
  48.       
  49. Distribution
  50. ============
  51. You are free, in fact encouraged, to distribute the SHAREWARE (unregistered)
  52. version of DJVGA library provided that all files contained in the
  53. original DJVGA archive are distributed in their original unmodified state.
  54.       
  55.  
  56. What is DJVGA?
  57. ==============
  58. DJVGA is a toolkit of low-level programmed graphic routines for the EGA/VGA
  59. Turbo Pascal v6.0 programmers that can be used to completely replace or
  60. to be used with Borland's BGI interface.
  61.  
  62. The common programmer who wants optimized and fast code will find this unit
  63. to be very helpful in developing their applications.  It will only add
  64. a small 3k (maybe more) to your final .EXE program if you use all of the
  65. procedures and functions.  DJVGA will run up to 1000% faster than the
  66. BGI interface, so choose wisely!
  67.  
  68.  
  69. DJVGA - Procedures and Functions
  70. ================================
  71. Summary of Procedures and Functions (described in detail below):
  72.  
  73. Function  DJ_GetVideo:AdapterType;
  74. Procedure DJ_ClrScr;
  75. Procedure DJ_VGASetPalette(Pale:VGAPaletteType);
  76. Procedure DJ_SetPage(Page:Integer);
  77. Function  DJ_GetPage:Integer;
  78. Procedure DJ_DPutPixel(Row,Column,Color:Integer);
  79. Function  DJ_DGetPixel(Row,Column:Integer):Integer;
  80. Procedure DJ_SetVideoMode(Number:Byte);
  81. Function  DJ_GetVideoMode:Integer;
  82. Function  DJ_TextHeight:Word;
  83. Procedure DJ_Line(X1,Y1,X2,Y2,Color:Integer);
  84. Procedure DJ_GetImage(X1,Y1,X2,Y2:Integer; Image:Pointer);
  85. Procedure DJ_PutImage(X1,Y1:Integer; Image:Pointer);
  86. Procedure DJ_SetMode(Mode:Integer);
  87. Procedure DJ_Ellipse(X,Y,XRadius,YRadius,Color:Integer);
  88. Procedure DJ_SwitchBank(Bank:Integer);
  89. Procedure DJ_Lines_From_Center(Color,Size:Integer);
  90. Procedure DJ_Fade(NumPix:LongInt; Color:Integer);
  91. Procedure DJ_Filled_Rectangle(StartCol,StartRow,EndCol,EndRow,Color:Integer);
  92.  
  93.  
  94. =============================================================================
  95. Syntax     : Function DJ_GetVideo:AdapterType;
  96.  
  97. Function   : Returns the current video hardware that the system has.
  98.  
  99. Description: DJ_GetVideo searches your computer and determines what type
  100.              of video hardware you have hooked up to the system.
  101.  
  102.              DJ_GetVideo will return one of the following in the
  103.              enumerated type of AdapterType:
  104.  
  105.              AdapterType = (None,MDA,CGA,Hercules,EGA,MCGA,VGA);
  106.  
  107. Example    : Program SeeAdapter;
  108.              ..
  109.              ..
  110.              Begin
  111.                 Case DJ_GetVideo Of
  112.                      None:WriteLn('No video adapter found!');
  113.                       MDA:WriteLn('MDA found!');
  114.                       CGA:WriteLn('CGA found!');
  115.                  Hercules:WriteLn('Hercules found!');
  116.                       EGA:WriteLn('EGA found!');
  117.                      MCGA:WriteLn('MCGA found!');
  118.                       VGA:WriteLn('VGA found!');
  119.                 End;
  120.              End.
  121.  
  122. =============================================================================
  123. Syntax     : Procedure DJ_ClrScr;
  124.  
  125. Function   : Clears the video screen at $A000.
  126.  
  127. Description: DJ_ClrScr will clear the screen in most EGA/VGA video modes
  128.              such as 320x200x16.  It works much like the CRT procedure
  129.              ClrScr;
  130.  
  131. Example    : Program ClearScreenNeatoEh;
  132.              ..
  133.              ..
  134.              Begin
  135.                 DJ_SetVideoMode($0D);             { EGA 320x200x16 }
  136.                 For I1 := 1 To 100 Do
  137.                     For I2 := 1 To 100 Do
  138.                         DJ_DPutPixel(I1,I2,Random(14)+1));
  139.  
  140.                 ASM
  141.                   MOV AH,1    { Function: Wait For A Key }
  142.                   INT 21H     { Call DOS }
  143.                 End;
  144.                 DJ_ClrScr;
  145.                 ASM           { The screen cleared eh? }
  146.                   MOV AH,1
  147.                   INT 21H
  148.                 End;
  149.  
  150.                 DJ_SetVideoMode($03);             { Regular Text Mode }
  151.              End.
  152.  
  153. =============================================================================
  154. Syntax     : Procedure DJ_VGASetPalette(Pale:VGAPaletteType);
  155.  
  156. Function   : Sets the palette on the VGA.
  157.  
  158. Description: DJ_VGASetPalette will change the colors of the current
  159.              VGA Palette.  You can choose 256 out of something around
  160.              65,500.
  161.  
  162. Example    : Program MakeColorsForBlind;
  163.              ..
  164.              ..
  165.              Begin
  166.                 For I := 0 To 255 Do Pl[I] := 0;
  167.                 DJ_VGASetPalette(Pl);
  168.              End;
  169.  
  170.              { now see if you can see any of the VGA colors :-) }
  171.  
  172. =============================================================================
  173. Syntax     : Procedure DJ_SetPage(Page:Integer);
  174.  
  175. Function   : Select your video page.
  176.  
  177. Description: DJ_SetPage will select the video page you want to use on
  178.              the EGA/VGA.
  179.  
  180.              Pages 0-7 can be used in 320x200x16
  181.              Pages 0-3 can be used in 640x200x16
  182.              Pages 0-1 can be used in 640x350x16
  183.  
  184.              This procedure can be helpful for when doing animation
  185.              sequences.  Switching between video pages quickly to
  186.              produce a smooth effect.
  187.  
  188. Example    : Program SetMyPageAndGetItToo;
  189.              ..
  190.              ..
  191.              Begin
  192.                 DJ_SetVideoMode($0D);             { EGA 320x200x16 }
  193.                 DJ_Line(10,10,100,100);
  194.                 DJ_SetPage(1);                    { Set video page 1}
  195.                 { where did the line go }
  196.                 WriteLn(DJ_GetPage);  { it should say 1 }
  197.                 ASM
  198.                   MOV AH,1  { DOS: Get key function }
  199.                   INT 21H   { Call DOS }
  200.                 End;
  201.                 DJ_SetPage(0);                    { Set back to 0 }
  202.                                                   { There's the line }
  203.                 DJ_SetVideoMode($03);             { Regular Text Mode }
  204.              End.
  205. =============================================================================
  206. Syntax     : Function DJ_GetPage:Integer;
  207.  
  208. Function   : Returns the current video page.
  209.  
  210. Description: DJ_GetPage will return the current video page.  If you
  211.              previously used DJ_SetPage(1) it will return 1.  This is
  212.              used to tell what video page you are on, in case you are
  213.              in some superb animation flick or something to that effect.
  214.  
  215. Example    : See DJ_SetPage.
  216. =============================================================================
  217. Syntax     : Procedure DJ_DPutPixel(Row,Column,Color:Integer);
  218.  
  219. Function   : Puts a pixel directly on screen.
  220.  
  221. Description: DJ_DPutPixel puts a pixel (a tiny dot) on the screen using
  222.              ports for quick direct access.  It is much faster than calling
  223.              an interrupt.  The parameters are self explanitory.
  224.  
  225. Example    : Program PixTest;
  226.              ..
  227.              ..
  228.              Var R1,R2,I,I1,I2:Integer;
  229.  
  230.              Function KeyPressed:Boolean; Assembler;
  231.              ASM
  232.                MOV AH,0BH   { check if key has been pressed? }
  233.                INT 21H      { call dos }
  234.                AND AL,AL    { if a key pending ? }
  235.                JZ  @no      { nope }
  236.                MOV AL,True  { yupe }
  237.                @no:
  238.              End;
  239.  
  240.              Begin
  241.                DJ_SetVideoMode($0D);  { 320x200x16 EGA }
  242.                Repeat
  243.                   R1 := Random(14)+1;
  244.                   R2 := Random(14)+1;
  245.                   For I1 := 1 To 200 Do
  246.                   Begin
  247.                       For I2 := 1 To 200 Do
  248.                       Begin
  249.                          DJ_DPutPixel(I1,I2,R1);
  250.                          DJ_DPutPixel(I2,I1,R2);
  251.                       End;
  252.                   End;
  253.                Until KeyPressed;
  254.                { clear the keypress }
  255.                ASM
  256.                  MOV AH,1  { keyport input }
  257.                  INT 21H   { call DOS }
  258.                End;
  259.                { return to text mode }
  260.                DJ_SetVideoMode($03);
  261.              End.
  262. =============================================================================
  263. Syntax     : Function DJ_DGetPixel(Row,Column:Integer):Integer;
  264.  
  265. Function   : Returns the color of the pixel addressed.
  266.  
  267. Description: DJ_DGetPixel returns the current color of the pixel given.
  268.  
  269.              If you previously put a pixel on the screen using DJ_DPutPixel
  270.              you can use DJ_DGetPixel and get the color of it.  This function
  271.              can be used to produce some special effects along with
  272.              DJ_DPutPixel.
  273.  
  274. Example    : Program GetPixTesterHereWeGo;
  275.              ..
  276.              ..
  277.  
  278.              Var R1,R2,I,I1,I2:Integer;
  279.  
  280.              Function KeyPressed:Boolean; Assembler;
  281.              ASM
  282.                MOV AH,0BH   { check if key has been pressed? }
  283.                INT 21H      { call dos }
  284.                AND AL,AL    { if a key pending ? }
  285.                JZ  @no      { nope }
  286.                MOV AL,True  { yupe }
  287.                @no:
  288.              End;
  289.  
  290.              Begin
  291.                 DJ_SetVideoMode($0D);  {  320x200x16 EGA }
  292.                 For I := 1 To 100 Do DJ_DPutPixel(Random(319)+1,Random(199)+1,Random(14)+1);
  293.  
  294.                 For I1 := 1 To 320 Do
  295.                 Begin
  296.                    For I2 := 1 To 200 Do
  297.                    Begin
  298.                       If KeyPressed Then
  299.                       Begin
  300.                          ASM
  301.                            MOV AH,1      { clear keypress }
  302.                            INT 21H
  303.                            MOV AX,0003H  { set video mode back to text }
  304.                            INT 10H
  305.                          End;
  306.                          Halt(0);
  307.                       End;
  308.                       If DJ_DGetPixel(I1,I2) > 0 Then DJ_DPutPixel(I1,I2,0);  { change to black }
  309.                    End;
  310.                 End;
  311.  
  312.                 ASM
  313.                   MOV AH,1  { keyport input }
  314.                   INT 21H   { call DOS }
  315.                 End;
  316.  
  317.                 { return to text mode }
  318.                 DJ_SetVideoMode($03);
  319.              End.
  320. =============================================================================
  321. Syntax     : Procedure DJ_SetVideoMode(Number:Byte);
  322.  
  323. Function   : Set the video mode
  324.  
  325. Description: DJ_SetVideoMode is used to set the video mode.  You can
  326.              set it to any mode using the procedure but not all of them
  327.              will work with the other functions in this unit.  The most
  328.              reliable video modes to use for this unit are:
  329.  
  330.              320x200x16     EGA/VGA      $0D
  331.              640x200x16     EGA/VGA      $0E
  332.              640x350x16     EGA/VGA      $10
  333.  
  334.              and there are many others that can be used such as the
  335.              256 color VGA modes.
  336.  
  337. Example    : Program TestSettingTheVideoMode;
  338.              ..
  339.              ..
  340.              Begin
  341.                 DJ_SetVideoMode($0D);   { 320x200x16 EGA/VGA }
  342.                 WriteLn(DJ_GetVideoMode);
  343.                 WriteLn('Hello John Doe!');
  344.                 ASM
  345.                   MOV AH,1
  346.                   INT 21H
  347.                 End;
  348.                 DJ_SetVideoMode($03);   { Text mode }
  349.              End.
  350. =============================================================================
  351. Syntax     : Function DJ_GetVideoMode:Integer;
  352.  
  353. Function   : Returns the current video mode in used.
  354.  
  355. Description: DJ_GetVideoMode returns the current video mode in use.
  356.  
  357. Example    : See DJ_SetVideoMode.
  358. =============================================================================
  359. Syntax     : Function DJ_TextHeight:Word;
  360.  
  361. Function   : Returns the textheight of the current font used.
  362.  
  363. Description: DJ_TextHeight works much like the TextHeight procedure in
  364.              the GRAPH unit but does not require a parameter because it
  365.              is font sensitive.  It will usually return a height of 8
  366.              if in text mode.
  367.  
  368. Example    : Program IThinkWeNeedTheTextHeight;
  369.              ..
  370.              ..
  371.              Begin
  372.                 WriteLn(DJ_TextHeight);  { Simple eh? }
  373.              End.
  374.  
  375. =============================================================================
  376. Syntax     : Procedure DJ_Line(X1,Y1,X2,Y2,Color:Integer);
  377.  
  378. Function   : Draw a line from anywhere to anywhere on the screen.
  379.  
  380. Description: DJ_Line will draw a line on the screen from X1,Y1 to X2,Y1
  381.              in the Color specified.  It uses very fast direct port and
  382.              screen access to draw the line which gives it its fast speed
  383.              and small size.
  384.  
  385. Example    : Program LetsDrawABoxInRed;
  386.              ..
  387.              ..
  388.              Begin
  389.                 DJ_SetVideoMode($0D);  { 320x200x16 EGA/VGA }
  390.  
  391.                 { draw box around screen }
  392.                 DJ_Line(10,10,300,10,12);
  393.                 DJ_Line(300,10,300,180,12);
  394.                 DJ_Line(300,180,10,180,12);
  395.                 DJ_Line(10,180,10,10,12);
  396.  
  397.                 { aren't you getting SICK of these ASM statements :-) }
  398.                 ASM
  399.                   MOV AH,1  { wait for a key func }
  400.                   INT 21H   { call DOS }
  401.                 End;
  402.  
  403.                 { go back to text mode }
  404.                 DJ_SetVideoMode($03);
  405.              End.
  406. =============================================================================
  407. Syntax     : Procedure DJ_GetImage(X1,Y1,X2,Y2:Integer; Image:Pointer);
  408.  
  409. Function   : Saves a bitmap image of the specified region into memory.
  410.  
  411. Description: DJ_GetImage copies an image from the screen to memory.
  412.  
  413.              X1,Y1,X2, and Y2 define the area of the screen to which the
  414.              square is to be copied.  Image points to the area in memory
  415.              where the bitmap image is stored.  The first two integers
  416.              of this area are used for the width and the height of the
  417.              rectangle; the remainder holds the image itself.
  418.  
  419. Example    : Program TestGetImage;
  420.              ..
  421.              ..
  422.              Var BitImage:Pointer;
  423.              Begin
  424.                 DJ_SetVideoMode($0D);             { EGA 320x200x16 }
  425.                 DJ_GetImage(1,1,50,50,BitImage);  { save image }
  426.                 DJ_ClrScr;                        { clear screen }
  427.                 DJ_PutImage(1,1,BitImage);        { restore image }
  428.                 DJ_SetVideoMode($03);             { Regular Text Mode }
  429.              End.
  430. =============================================================================
  431. Syntax     : Procedure DJ_PutImage(X1,Y1:Integer; Image:Pointer);
  432.  
  433. Function   : Writes a bitmap image of the specified region onto the screen.
  434.  
  435. Description: DJ_PutImage copies an image from memory to screen.
  436.  
  437.              X1,Y1 are the corner coordinates at which you want to display
  438.              the saved image.
  439.  
  440. Example    : See DJ_GetImage.
  441. =============================================================================
  442. Syntax     : Procedure DJ_SetMode(Mode:Integer);
  443.  
  444. Function   : Change the current drawing function.
  445.  
  446. Description: DJ_SetMode changes the current writing mode to the screen.  It
  447.              is set as a default to DJReplace.  This routine can be used in
  448.              conjunction with DJ_Line/DJ_PutImage/DJ_DPutPixel, etc to make
  449.              some impressing animation/special effects.
  450.  
  451.              Here are the following parameters that can be used with
  452.              this routine:
  453.  
  454.              DJReplace = $00;
  455.              DJAND     = $08;   { AND the image to the screen }
  456.              DJOR      = $10;   { OR the image to the screen }
  457.              DJXOR     = $18;   { XOR the image to the screen }
  458.  
  459. Example    : Program IGiveUpAtThisProgrammingJob_Not;
  460.              ..
  461.              ..
  462.              Begin
  463.                 DJ_SetVideoMode($0D);  { 320x200x16 EGA/VGA }
  464.                 DJ_SetMode(DJXOR);
  465.                 DJ_Line(10,10,50,50);  { Now you see it }
  466.                 ASM
  467.                   MOV AH,1
  468.                   INT 21H
  469.                 End;
  470.                 DJ_Line(10,10,50,50);  { Now you don't :-) }
  471.                 DJ_SetVideoMode($03);  { Text mode (AGAIN!!!) }
  472.              End.
  473. =============================================================================
  474. Syntax     : Procedure DJ_Ellipse(X,Y,XRadius,YRadius,Color:Integer);
  475.  
  476. Function   : Draw an ellipse/circle on the screen.
  477.  
  478. Description: DJ_Ellipse is a superfast and supercharged ellipse/circle
  479.              drawing routine.  You must have a little knowledge of what
  480.              a radius is before using this routine.  The rest of it
  481.              is self-explanitory.
  482.  
  483. Example    : Program Circle_Around_And_Around_And_Around_And;
  484.              ..
  485.              ..
  486.              Begin
  487.                 DJ_SetVideoMode($0D);  { EGA/VGA 320x200x16 }
  488.                 DJ_Ellipse(110,100,60,50,15);  { Draw a NEAT design }
  489.                 DJ_Ellipse(120,100,65,55,12);  { on the screen }
  490.                 DJ_Ellipse(130,100,70,60,11);
  491.                 DJ_Ellipse(140,100,75,65,10);
  492.                 DJ_Ellipse(115,100,80,70,9);
  493.                 DJ_Ellipse(125,100,85,75,8);
  494.                 DJ_Ellipse(135,100,90,80,7);
  495.                 DJ_Ellipse(140,100,95,85,13);
  496.                 DJ_Ellipse(145,100,100,90,14);
  497.                 ASM
  498.                   MOV AH,1
  499.                   INT 21H
  500.                 End;
  501.                 DJ_SetVideoMode($03);   { Text mode }
  502.              End.
  503. =============================================================================
  504. Syntax     : Procedure DJ_SwitchBank(Bank:Integer);
  505.  
  506. Function   : Switch to the alternate bank of memory on SuperVGA cards.
  507.  
  508. Description: DJ_SwitchBank will switch to different memory banks on
  509.              many SuperVGA cards.  To call this routine you will need
  510.              to know which kind of SuperVGA card it is (refer to
  511.              DJ_SuperVGA procedure, if you do not know).  This routine
  512.              supports the following cards:
  513.  
  514.              TSeng3    = 1;     { Tseng 3000 }
  515.              TSeng4    = 2;     { Tseng 4000 }
  516.              Wonder    = 3;     { VGA Wonder }
  517.              Paradise  = 4;     { Pardise VGA }
  518.              Vid7      = 5;     { Video 7 VGA }
  519.  
  520. Example    : Program LetsTryItAllOverAgain;
  521.              ..
  522.              ..
  523.              Begin
  524.                 DJ_SetVideoMode($13);  { 320x200x256 VGA }
  525.                 SwitchBank(Vid7);      { Switch to alternate bank }
  526.                 DJ_SetVideoMode($03);  { Text mode (AGAIN!!!) }
  527.              End.
  528. =============================================================================
  529. Syntax     : Procedure DJ_Lines_From_Center(Color,Size:Integer);
  530.  
  531. Function   : Draw a bunch of lines coming from the centermost part of
  532.              the screen.
  533.  
  534. Descripton : DJ_Lines_From_Center draws a bunch of lines coming from the
  535.              centermost part of the screen.  The size of the lines can
  536.              be set by the Size parameter.  This routine was written
  537.              mainly for testing purposes.
  538.  
  539. Example    : Program NeatoBobFredTimJedAndJohn;
  540.              ..
  541.              ..
  542.              Begin
  543.                 DJ_SetVideoMode($0D); { EGA/VGA 320x200x16 }
  544.                 Repeat
  545.                     DJ_Lines_From_Center(11,Random(150)+1);
  546.                     DJ_ClrScr;
  547.                 Until KeyPressed;
  548.                 ASM
  549.                   MOV AH,1
  550.                   INT 21H
  551.                 End;
  552.                 DJ_SetVideoMode($03); { Text Mode (AGAIN!!!) }
  553.              End.
  554. =============================================================================
  555. Syntax     : Procedure DJ_Fade(NumPix:LongInt; Color:Integer);
  556.  
  557. Function   : Produces a fading effect into any color in the palette.
  558.  
  559. Description: DJ_Fade will fade your screen all the way, partially, or just
  560.              a little bit by specifying how many pixel blocks to fade in the
  561.              NumPix parameter.  DJ_Fade can fade the screen into any color,
  562.              but the most used is usually black to procedure a screen clearing
  563.              special effect.
  564.  
  565. Example    : Program Neato_Boom_Wow_Hi;
  566.              ..
  567.              ..
  568.              Begin
  569.                 DJ_SetVideoMode($0D);  { 320x200x16 EGA/VGA }
  570.                 DJ_Fade(MaxPixs,12);
  571.                 ASM
  572.                   MOV AH,1
  573.                   INT 21H
  574.                 End;
  575.                 DJ_Fade(MaxPixs,0);
  576.                 ASM
  577.                   MOV AH,1
  578.                   INT 21H
  579.                 End;
  580.                 DJ_SetVideoMode($03);  { Text mode (AGAIN!!!) }
  581.              End.
  582. =============================================================================
  583. Syntax     : Procedure DJ_Filled_Rectangle(StartCol,StartRow,EndCol,EndRow,
  584.                                            Color:Integer);
  585.  
  586. Function   : Draw a filled rectangle.
  587.  
  588. Description: DJ_Filled_Rectangle fills a specified part of the screen with
  589.              a color of your choice in the shape of a square or a rectangle.
  590.              This procedure is used in our demo program to clear the screen
  591.              in a fancy manor.
  592.  
  593. Example    : Program ImGettingTiredOfTheseDumbNames;
  594.              ..
  595.              ..
  596.              Begin
  597.                 DJ_SetVideoMode($0D);  { 320x200x16 EGA/VGA }
  598.                 { This will be simple demo! }
  599.                 Repeat
  600.                    DJ_Filled_Rectangle(0,0,320,200,Random(15)+1);
  601.                 Until KeyPressed;
  602.                 ASM
  603.                   MOV AH,1
  604.                   INT 21H
  605.                 End;
  606.                 DJ_SetVideoMode($03);  { Text mode (AGAIN!!!) }
  607.              End.
  608. =============================================================================
  609.  
  610.  
  611. To keep the lawyers happy:
  612.  
  613. BGI (Borland Graphical Interface) and Turbo Pascal are registered trademarks
  614. of Borland International.
  615.  
  616.       
  617.      Epilog
  618.      ======
  619.      Please enjoy the program and feel free to contact TopSoft Support Systems,
  620.      with any comments or questions concering this product.
  621.       
  622.      Thanks,
  623.       
  624.                 John Richardson
  625.                 TopSoft Support Systems
  626.                 (414) 796-8408
  627.                 12/24/96/19.2/38.4 - V32/V42
  628.                 PC-Pursuitable D/WIMIL/24
  629.                 Fido [1:154/300,1:154/301]
  630.                 RBBS-Net [8:972/1001,8:972/1000]
  631.  
  632.  
  633.